home *** CD-ROM | disk | FTP | other *** search
Modula Definition | 1995-04-15 | 4.3 KB | 126 lines |
- DEFINITION MODULE OLoadData;
- (*
- This module allows the access to the data structures Module and
- TypeDescriptor, which are used also in the Oberon System.
-
- The access is done through procedures. These procedures are
- written in concordance to the aligning rules of the oberon
- compiler.
-
- Thus this module has to be revised whenever the oberon compiler
- is changed.
- *)
-
- (*FROM SYSTEM IMPORT ADDRESS;*)
-
- CONST
- descSizeAligned=92; (* Descriptor size, long word aligned *)
-
- CONST
- nameLen=24;
-
- TYPE
- Absolute=LONGINT;
- Offset=LONGINT;
- OldCardinal=CARDINAL;
- OldLongCard=LONGCARD;
- CARDINAL=INTEGER;
- LONGCARD=LONGINT;
-
- CodeBase=Absolute;
- ConstBase=Absolute;
- CommandBase=Absolute;
- Count=CARDINAL;
- DataBase=Absolute;
- Entry=Offset;
- EntryBase=Absolute;
- Key=LONGCARD;
- ImportBase=Absolute;
- Index=CARDINAL;
- Module=Absolute;
- Name=ARRAY [0..nameLen-1] OF CHAR;
- PointerBase=Absolute;
- RefBase=Absolute;
- Size=LONGCARD;
- Tag=LONGCARD;
- TypeDescriptor=Absolute;
-
- VAR
- module255:ARRAY [0..255] OF Absolute;
- (*
- module255 has to be prefilled with the absolute addresses of
- special funtions. The compiler encodes them as functions belonging
- to the module with module number 255. Whenever fixup encounters
- a reference to (mno=255, eno), it will translate this entry
- using this array.
- *)
-
- PROCEDURE commandG(mod:Module):CommandBase;
- PROCEDURE commandP(mod:Module; command:CommandBase);
- PROCEDURE commandsEntryG(mod:Module; index:Index):Entry;
- PROCEDURE commandsEntryP(mod:Module; index:Index; entry:Entry);
- PROCEDURE commandsNameG(mod:Module; index:Index; VAR name:Name);
- PROCEDURE commandsNameP(mod:Module; index:Index; name:Name);
- PROCEDURE codeG(mod:Module):CodeBase;
- PROCEDURE codeP(mod:Module; code:CodeBase);
- PROCEDURE codeSizeG(mod:Module):Size;
- PROCEDURE codeSizeP(mod:Module; size:Size);
- PROCEDURE constG(mod:Module):ConstBase;
- PROCEDURE constP(mod:Module; const:ConstBase);
- PROCEDURE constSizeG(mod:Module):Size;
- PROCEDURE constSizeP(mod:Module; size:Size);
- PROCEDURE dataG(mod:Module):DataBase;
- PROCEDURE dataP(mod:Module; data:DataBase);
- PROCEDURE dataSizeG(mod:Module):Size;
- PROCEDURE dataSizeP(mod:Module; size:Size);
- PROCEDURE entriesG(mod:Module; index:Index):Entry;
- PROCEDURE entryG(mod:Module):EntryBase;
- PROCEDURE entryP(mod:Module; entry:EntryBase);
- PROCEDURE importG(mod:Module):ImportBase;
- PROCEDURE importP(mod:Module; import:ImportBase);
- PROCEDURE importsG(mod:Module; index:Index):Module;
- PROCEDURE importsP(mod:Module; index:Index; module:Module);
- PROCEDURE keyG(mod:Module):Key;
- PROCEDURE keyP(mod:Module; key:Key);
- PROCEDURE nameG(mod:Module; VAR name:Name);
- PROCEDURE nameP(mod:Module; name:Name);
- PROCEDURE nextG(mod:Module):Module;
- PROCEDURE nextP(mod:Module; next:Module);
- PROCEDURE nofCommandsG(mod:Module):Count;
- PROCEDURE nofCommandsP(mod:Module; count:Count);
- PROCEDURE nofEntriesG(mod:Module):Count;
- PROCEDURE nofEntriesP(mod:Module; count:Count);
- PROCEDURE nofImportsG(mod:Module):Count;
- PROCEDURE nofImportsP(mod:Module; count:Count);
- PROCEDURE nofPointersG(mod:Module):Count;
- PROCEDURE nofPointersP(mod:Module; count:Count);
- PROCEDURE pointerG(mod:Module):PointerBase;
- PROCEDURE pointerP(mod:Module; pointer:PointerBase);
- PROCEDURE refG(mod:Module):RefBase;
- PROCEDURE refP(mod:Module; ref:RefBase);
- PROCEDURE refCntG(mod:Module):Count;
- PROCEDURE refCntP(mod:Module; refCnt:Count);
- PROCEDURE refSizeG(mod:Module):Size;
- PROCEDURE refSizeP(mod:Module; size:Size);
- PROCEDURE tagP(mod:Module; tag:Tag);
-
- PROCEDURE tdExtensionLevelG(td:TypeDescriptor):Count;
- PROCEDURE tdModuleP(td:TypeDescriptor; mod:Module);
- PROCEDURE tdNumberOfMethodsG(td:TypeDescriptor):Count;
- PROCEDURE tdSizeG(td:TypeDescriptor):Size;
- PROCEDURE tdSizeP(td:TypeDescriptor; size:Size);
- PROCEDURE tdTagP(td:TypeDescriptor; tag:Tag);
-
- PROCEDURE Address(mod:Module; mno,eno:SHORTCARD):Absolute;
- PROCEDURE AllocateMod(nofEntries:Count; nofCommands:Count; nofPtrs:Count; nofImports:Count; constSize:Size; dataSize:Size; codeSize:Size; refSize:Size):Module;
- PROCEDURE CompleteTypeDescs(mod:Module);
- PROCEDURE DeallocateMod(mod:Module);
- PROCEDURE EqualName(mod:Module; name:ARRAY OF CHAR):BOOLEAN;
- PROCEDURE Fixup(mod:Module; link:CARDINAL);
- PROCEDURE GetName(base:Absolute; offset:LONGINT; VAR name:Name);
- PROCEDURE PutName(base:Absolute; offset:LONGINT; name:Name);
- PROCEDURE MakeAbsolute(mod:Module; base:Absolute; entry:Entry);
- PROCEDURE SetupPointers(mod:Module);
-
- END OLoadData.
-